Lista de Exercícios - SEU NOME

Os exercícios valem 30% da nota final.

  • Data Entrega: 18/09/2016

  • Formato da Entrega: .ipynb - Clique em File -> Download as -> IPython Notebook (.ipynb)

  • Enviar por email até a data de entrega, onde o assunto do email deve ser: Exercícios PosMBA Turma2 - SEU NOME

O cálculo da nota final é dado por: NF = (lista * 0.3) + (prova * 0.7)

Exercício 1

(0.5 ponto) Crie uma função chamada soma_tres_num que irá receber 3 parâmetros(sendo o último com valor padrão 10) e retorne a soma desses três valores.


In [1]:
def soma_tres_num(x,y,z=10):
    return x+y+z

Teste para as seguintes situações:


In [2]:
print(soma_tres_num(0, 10))


20

In [3]:
print(soma_tres_num(1,2,3))


6

In [4]:
print(soma_tres_num(10, 10, 0))


20

Exercício 2

(0.5 ponto) Crie uma função chamda qtde_caracteres que receba um parâmetro e retorne a quantidade de caracteres. Se o valor recebido pelo parâmetro não for uma String, utilizar a função str() para converter o argumento.


In [ ]:

Teste as seguintes situações:


In [ ]:
print(qtde_caracteres(1234))
print(qtde_caracteres(', -'))
print(qtde_caracteres('python'))
print(qtde_caracteres('fia e big data'))

Exercicío 3

(1.5 ponto) Carregue o arquivo chamado funcionarios.txt. Esse arquivo contém nome e o salário anual de cada funcionário.

alexandre,42000
rose,50000
anderson,30000
antonio,60000
maria,120000
carlos,86000
cesar,48000

Faça os seguintes exercícios:

a) Crie uma função chamda carregar_dados_dic que deve receber um parâmetro(no caso o arquivo funcionarios.txt) e retorne um dicionário, onde a chave será o nome e o valor será o salário anual.


In [ ]:
def carregar_dados_dic(arquivo):
    # seu código aqui

In [ ]:
salarios = carregar_dados_dic('funcionarios.txt')

In [ ]:
print(salarios)

b) Crie uma função chamada calcular_salario_mensal que irá calcular quanto o funcionário ganha por mês. Verifique o tipo do campo do valor do dicionário. Utilize a função float() para converter o valor.


In [ ]:
def calcular_salario_mensal(salario_anual):
    # seu código aqui

c) Por fim, imprima para cada funcionário o nome, salário anual e mensal no seguinte formato:

Rose --- R$ 50000 --- R$ 4166.66

Dica: Lembre-se do .format para formatar uma string. Utilize a função round para arredondar para 2 casas decimais.

>>> round(7166.67555, 2)
7166.67

In [ ]:

Exercício 4

(1 ponto) Crie um programa que deve ler as informações do usuário (nome, idade e salário) através da função input. É necessário validar as informações com os seguintes critérios:

  • O nome deve ter tamanho maior que 3
  • A idade deve ser entre 18 e 65
  • O salário deve ser maior que R$ 788

Caso as informações não estejam nos critérios definidos anteriormente, será necessário solicitar ao usuário para digitar novamente. Por fim o programa deverá imprimir o seguinte texto:

NOME tem YY anos, recebe R$ SSS e seu nome tem CC caracteres.

Onde,

  • NOME deve ser substituído pelo nome digitado.
  • YY deve ser a idade
  • SSS deve ser substituído pelo valor do salário.
  • CC deve ser substituído pela quantidade de caracteres.

Lembre-se de formatar o salário para duas casas decimais.


In [ ]:


In [ ]:


In [ ]:


In [ ]:

Exercicio 5

(1.5 ponto) Crie uma função que deverá receber dois parâmetros, sendo um o arquivo e o outro a quantidade de palavras que aparecem com mais frequência. O retorno deverá ser uma lista, sendo que cada elemento dessa lista, deve ser uma tupla (chave-valor), sendo chave o nome da palavra e o valor a quantidade de vezes que ela apareceu no texto.

Por exemplo,

palavras_frequentes('texto1.txt', 10) - pesquisa no arquivo texto1.txt as 10 palavras mais frequentes.
palavras_frequentes('texto2.txt', 5) - pesquisa no arquivo texto2.txt as 5 palavras mais frequentes.


Lembre-se de tratar possíveis erros!

Exemplo de uso e saida:

>>> palavras10mais = palavras_frequentes('texto1.txt', 10)
>>> print(palavras10mais)
[('programas', 662), ('codigos', 661), ('dinheiro', 661), ('fia', 586), ('python', 491), ('data', 434), ('big', 434), ('velocidade', 133), ('Moneyball', 113), ('dados', 95)]

Dica: Verifique o funcionamento da função sorted para ordernar um dicionário com base no valor.


In [ ]:
def palavras_frequentes(arquivo, palavras_freq):
        # seu código aqui

Faça o teste para as seguintes situações:


In [ ]:
palavras_frequentes('texto1.txt', 10)

In [ ]:
palavras_frequentes('texto2.txt', 10)

In [ ]:
palavras_frequentes('texto1.txt', 5)

In [ ]:
palavras_frequentes('texto2.txt', 5)

In [ ]:
palavras_frequentes('texto1.txt', 30)

Exercício 6

(2 pontos) Utilizando o exemplo dado em aula sobre a Streaming API (Desafio 3 da Aula 5), recupere os tweets durante 10 minutos com os seguintes parâmetros:

fluxo.filter(track=['Big Data', 'Hadoop', 'Spark', 'Python', 'Data Science'], languages=['en', 'pt'])

Salve os tweets em um arquivo chamado tweets_10min.json.

Importe os módulos necessários


In [ ]:

Crie as chaves de acesso


In [ ]:
consumer_key = ''
consumer_secret = ''
access_token = ''
access_token_secret = ''

Realize a autorização e defina a token de acesso


In [ ]:

Crie a classe DadosPublicosTwitter herdando da classe tweepy.StreamListener para rodar durante 10 minutos e salvar os tweets no arquivo.


In [ ]:
class DadosPublicosTwitter(tweepy.StreamListener):
    # seu código aqui

Crie a instância da classe, o fluxo e realize a filtragem com os parâmetros definidos no enunciado.


In [ ]:

Exercício 7

(3 pontos) Com os dados salvos no tweets_10min.json, crie um DataFrame pandas com as seguintes colunas:

  • text - Texto do Tweet
  • created_at - Data da criação do Tweet
  • coordinates - Coordenadas
  • retweet_count - Quantidade de vezes que o tweet foi "retweetado".
  • favorite_count - Quantidade de vezes que o tweet foi "favoritado".

  • screen_name - Nome na tela (exemplo: @prof_dinomagri)

  • location - Localização
  • lang - Idioma
  • followers_count - Quantidade de seguidores
  • geo_enabled - Se tem a geolocalização habilitade
  • statuses_count - Quantidade de tweets postados.

  • lat - Recuperada através da função desenvolvida em sala

  • long - Recuperada através da função desenvolvida em sala
  • hashtags - Recuperada através da função desenvolvida em sala

Lembre-se de utilizar as funções desenvolvidas em sala de aula para recuperar a latitude, longitude e hastags.

No final salve o arquivo no formato CSV, utilizando o separador ponto e virgula (;) e com a codificação 'utf-8'.

Importe os módulos necessários


In [ ]:

Utilize o comando with para abrir o arquivo 'tweets_10min.json' e salvar em uma lista


In [ ]:

Crie o DataFrame com os dados e imprima apenas os 3 primeiros tweets (linhas)


In [ ]:

Crie uma lista, onde cada elemento será o nome da coluna


In [ ]:
colunas = ['text', 'created_at', 'coordinates', 'retweet_count', 
           'favorite_count', 'screen_name', 'location', 'lang', 
           'followers_count', 'geo_enabled', 'statuses_count',
          'lat', 'long', 'hashtags']

Crie um DataFrame auxiliar passando as colunas por parâmetro


In [ ]:

Crie a função de pegar_lat_long(local)


In [ ]:
from geopy.geocoders import Nominatim
def pegar_lat_long(local):
    # seu código aqui

Crie a função para salvar_hashtags(texto)


In [ ]:
def salvar_hashtags(texto):
    # seu código aqui

Certifique-se que o DataFrame auxiliar tem as 14 colunas necessárias


In [ ]:
len(df_aux.columns)

Por fim crie o laço que irá iterar em cada elemento do DataFrame original e salvar apenas o que queremos no DataFrame auxiliar.

Lembre-se de como queremos a latitude e longitude a localização tem que ser diferente de None.


In [ ]:

Imprima o tamanho da DataFrame original e do auxiliar


In [ ]:

Responda:

1) Qual foi a porcentagem de Tweets descartados?


In [ ]:

2) Qual a porcentagem de tweets que tinham habilitado o geo_enabled?


In [ ]:

Salve os dados em arquivos em arquivo CSV


In [ ]: